﻿// --------------------------------------------------------------------------------------------------------------------
// <copyright company="Collaboris Ltd." file="IProgressReport.cs">
//   Copyright (c) Collaboris Ltd. All rights Reserved.
// </copyright>
// <summary>
//   Defines a Progress Report emitted
//   by an IAction
// </summary>
// --------------------------------------------------------------------------------------------------------------------

namespace Collaboris.Saf.Engine.Report
{
    using System;
    using System.Collections.Generic;

    /// <summary>
    /// Defines a Progress Report emitted
    /// by an IAction
    /// </summary>
    public interface IProgressReport
    {
        /// <summary>
        /// Gets or sets the mode. (Do or Undo)
        /// </summary>
        /// <value>The action mode.</value>
        ProcessMode Mode
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the name of the assembly.
        /// </summary>
        /// <value>The name of the assembly.</value>
        string AssemblyName
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the end date time.
        /// </summary>
        /// <value>The end date time.</value>
        DateTime EndDateTime
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the name.
        /// </summary>
        /// <value>The name.</value>
        string Name
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the Id of the Object 
        /// that the report is about.
        /// (e.g. Macro, Action or Entity)
        /// </summary>
        /// <value>The name.</value>
        Guid Id
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the start date time.
        /// </summary>
        /// <value>The start date time.</value>
        DateTime StartDateTime
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the status.
        /// </summary>
        /// <value>The status.</value>
        ProcessStatus Status
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the name of the type.
        /// </summary>
        /// <value>The name of the type.</value>
        string TypeName
        {
            get;
            set;
        }

    }
}